home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / STATISTI / 0850B.ZIP / SET2.ARC / CORR.PAS < prev    next >
Pascal/Delphi Source File  |  1979-12-31  |  6KB  |  220 lines

  1. VAR SWITCH14,SWITCH4,DF,TEMP,Y,NUMSAMPS,I,SWITCH:INTEGER;
  2.     COEFF,XCOOR,YCOOR,SUMX,SUMY,SUMXSQR,SUMYSQR, SUMXTIMESY,
  3.     A1,A2,A3,A4,L,X,FACTOR1,FACTOR2,RIGHTTAIL,TVALUE,CRIT52,CRIT51,CRIT12,CRIT11:REAL;
  4.     SWITCH13,SWITCH3,C:CHAR;
  5.     SWITCH2,LESSTHANONE:BOOLEAN;
  6. {$I B;REALRAIS}
  7. {$I B:INTRAISE}
  8.  
  9. PROCEDURE READDATA1;
  10. VAR XFILE:TEXT;
  11.     X:REAL;
  12.     I,MAXNUM:INTEGER;
  13.     FILENAME:STRING[12];
  14.  
  15. BEGIN
  16. WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
  17. READLN (FILENAME);
  18. IF SWITCH4=1 THEN BEGIN
  19. WRITELN (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
  20. END;
  21. ASSIGN (XFILE,FILENAME);
  22. RESET (XFILE);
  23. READLN (XFILE,X);
  24. READLN (XFILE,X);
  25. MAXNUM:=ROUND(X);
  26. WRITELN ('NUMBER OF PAIRS = ',MAXNUM);
  27. NUMSAMPS:=MAXNUM;
  28. IF SWITCH4=1 THEN BEGIN
  29. WRITELN (LST,'NUMBER OF PAIRS = ',MAXNUM);
  30. END;
  31. FOR I:=1 TO MAXNUM DO
  32. BEGIN
  33. READLN (XFILE,X);
  34. WRITELN ('ITEM X ',I:4,' = ',X:8:3);
  35. XCOOR:=X;
  36. IF SWITCH4=1 THEN BEGIN
  37. WRITELN (LST,'ITEM X ',I:4,' = ',X:8:3);
  38. END;
  39.  
  40. READLN (XFILE,X);
  41. YCOOR:=X;
  42. WRITELN (' ':5,'Y ',I:4,' = ',X:8:3);
  43. IF SWITCH4=1 THEN BEGIN
  44. WRITELN (LST,' ':5,'Y ',I:4,' = ',X:8:3);
  45. END;
  46. SUMX:=SUMX + XCOOR;
  47. SUMY:=SUMY + YCOOR;
  48. SUMXSQR:=SUMXSQR + XCOOR * XCOOR;
  49. SUMYSQR:=SUMYSQR + YCOOR * YCOOR;
  50. SUMXTIMESY:=SUMXTIMESY + XCOOR * YCOOR;
  51. END;
  52. CLOSE (XFILE);
  53. END;
  54.  
  55.  
  56. PROCEDURE READDATA;
  57. BEGIN
  58. WRITE ('NUMBER OF SAMPLES: ');
  59. READLN (NUMSAMPS);
  60. IF SWITCH4=1 THEN BEGIN
  61. WRITELN (LST,'NUMBER OF SAMPLES: ',NUMSAMPS);
  62. END;
  63. FOR I:=1 TO NUMSAMPS DO
  64. BEGIN
  65. WRITE ('COORDINATES OF POINT ',I,':  ');
  66. WRITE ('X: ');
  67. READLN (XCOOR);
  68. WRITE (' ':25);
  69. IF I>9 THEN WRITE (' ');
  70. WRITE ('Y: ');
  71. READLN (YCOOR);
  72. IF SWITCH4=1 THEN BEGIN
  73. WRITE (LST,'COORDINATES OF POINT ',I,':  ');
  74. WRITE (LST,'X: ');
  75. WRITELN (LST,XCOOR:8:3);
  76. WRITE (LST,' ':25);
  77. IF I>9 THEN WRITE (LST,' ');
  78. WRITE (LST,'Y: ');
  79. WRITELN (LST,YCOOR:8:3);
  80. END;
  81. SUMX:=SUMX + XCOOR;
  82. SUMY:=SUMY + YCOOR;
  83. SUMXSQR:=SUMXSQR + XCOOR * XCOOR;
  84. SUMYSQR:=SUMYSQR + YCOOR * YCOOR;
  85. SUMXTIMESY:=SUMXTIMESY + XCOOR * YCOOR;
  86. END;
  87. END;
  88.  
  89. PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
  90. VAR TEMP1,TEMP2:REAL;
  91.  
  92. PROCEDURE VALS(C52,C51,C12,C11:REAL);
  93. BEGIN
  94. CRIT52:=C52;
  95. CRIT51:=C51;
  96. CRIT12:=C12;
  97. CRIT11:=C11;
  98. END;
  99. PROCEDURE LOOKUP (DF:INTEGER);
  100. BEGIN
  101. CASE DF OF
  102. 1: VALS(0.988, 0.997, 0.9995, 0.9999);
  103. 2: VALS(0.900, 0.950, 0.980, 0.990);
  104. 3: VALS(0.805, 0.878, 0.934, 0.959);
  105. 4: VALS(0.729, 0.811, 0.882, 0.917);
  106. 5: VALS(0.669, 0.754, 0.833, 0.874);
  107. 6: VALS(0.622, 0.707, 0.789, 0.824);
  108. 7: VALS(0.582, 0.666, 0.750, 0.798);
  109. 8: VALS(0.549, 0.632, 0.716, 0.765);
  110. 9: VALS(0.512, 0.602, 0.685, 0.735);
  111. 10: VALS(0.497, 0.576, 0.658, 0.708);
  112. END;
  113. END;
  114.  
  115. BEGIN
  116. LOOKUP (DEGFREE);
  117. IF NUMSAMPS<13 THEN BEGIN
  118. WRITE ('THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
  119. WRITELN (CRIT52:5:4);
  120. WRITE ('THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
  121. WRITELN (CRIT51:5:4);
  122. WRITE ('THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
  123. WRITELN (CRIT12:5:4);
  124. WRITE ('THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
  125. WRITELN (CRIT11:5:4);
  126. IF SWITCH4=1 THEN BEGIN
  127. WRITE (LST,'THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
  128. WRITELN (LST,CRIT52:5:4);
  129. WRITE (LST,'THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
  130. WRITELN (LST,CRIT51:5:4);
  131. WRITE (LST,'THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
  132. WRITELN (LST,CRIT12:5:4);
  133. WRITE (LST,'THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
  134. WRITELN (LST,CRIT11:5:4);
  135. END;
  136. END
  137. ELSE BEGIN
  138. TVALUE:=(COEFF*SQRT(NUMSAMPS-2))/SQRT(1-SQR(COEFF));
  139. A1:=0.196854;
  140. A2:=0.115194;
  141. A3:=0.000344;
  142. A4:=0.019527;
  143. Y:=1;
  144. TVALUE:=SQR(TVALUE);
  145. DF:=NUMSAMPS-2;
  146. LESSTHANONE:=FALSE;
  147. IF TVALUE<1.0 THEN BEGIN
  148. TVALUE:=1/TVALUE;
  149. TEMP:=Y;
  150. Y:=DF;
  151. DF:=TEMP;
  152. LESSTHANONE:=TRUE;
  153. END;
  154. FACTOR1:=2/(9 * Y);
  155. FACTOR2:=2/(9 * DF);
  156. L:=ABS(REALRAIS(TVALUE,0.333333)*(1-FACTOR2)-1+FACTOR1)/
  157.     SQRT((FACTOR1+REALRAIS(TVALUE,0.666667)*FACTOR2));
  158. IF DF<4 THEN L:=L*(1+0.08*INTRAISE(DF,3));
  159. X:=0.25/INTRAISE((1+L*(A1+L*(A2+L*(A3+L*A4)))),4);
  160. IF LESSTHANONE THEN RIGHTTAIL:=1-X
  161. ELSE RIGHTTAIL:=X;
  162. WRITELN ('SIGNIFICANCE = ',RIGHTTAIL:7:6);
  163. IF SWITCH4=1 THEN BEGIN
  164. WRITELN (LST,'SIGNIFICANCE = ',RIGHTTAIL:7:6);
  165. END;
  166. END;
  167. END;
  168.  
  169. BEGIN
  170. REPEAT
  171. WRITELN ('CORRELATION COEFFICIENT');
  172. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  173. READLN (SWITCH3);
  174. IF SWITCH3='Y' THEN SWITCH4:=1;
  175. IF SWITCH3='y' THEN SWITCH4:=1;
  176. IF SWITCH4=1 THEN BEGIN
  177. WRITELN (LST,'CORRELATION COEFFICIENT');
  178. END;
  179. SUMX:=0;
  180. SUMY:=0;
  181. SUMXSQR:=0;
  182. SUMYSQR:=0;
  183. SUMXTIMESY:=0;
  184. WRITE ('DO YOU WISH DISK ENTRY?');
  185. READLN (SWITCH13);
  186. IF SWITCH13='Y' THEN SWITCH14:=1;
  187. IF SWITCH13='y' THEN SWITCH14:=1;
  188. IF SWITCH14<>1 THEN READDATA;
  189. IF SWITCH14=1 THEN READDATA1;
  190. BEGIN
  191. IF (SUMX * SUMX=NUMSAMPS * SUMXSQR) OR (NUMSAMPS * SUMYSQR = SUMY * SUMY)
  192.    THEN BEGIN
  193. WRITELN ('COEFFICIENT CANNOT BE CALCULATED');
  194. IF SWITCH4=1 THEN BEGIN
  195. WRITELN (LST,'COEFFICIENT CANNOT BE CALCULATED');
  196. END;
  197. END
  198. ELSE BEGIN
  199. COEFF:=(NUMSAMPS * SUMXTIMESY - SUMX * SUMY)/ SQRT ((NUMSAMPS * SUMXSQR
  200.           -SUMX * SUMX) * (NUMSAMPS * SUMYSQR - SUMY * SUMY));
  201. WRITELN ('LINEAR CORRELATION COEFFICIENT');
  202. WRITELN ('CORRELATION COEFFICIENT = ',COEFF:7:6);
  203. IF SWITCH4=1 THEN BEGIN
  204. WRITELN (LST,'LINEAR CORRELATION COEFFICIENT');
  205. WRITELN (LST,'CORRELATION COEFFICIENT = ',COEFF:7:6);
  206. END;
  207. FINDCRITICALVALUES (NUMSAMPS-2);
  208. WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
  209. READLN (C);
  210. WHILE NOT (C IN ['Y','y','n','N']) DO
  211. BEGIN
  212. WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
  213. READLN (C)
  214. END;
  215. SWITCH2:=C IN ['N','n']
  216. END;
  217. END;
  218. UNTIL SWITCH2
  219. END.
  220.